### 240. 搜索二维矩阵 II

# 题目
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性：
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。

https://leetcode-cn.com/problems/search-a-2d-matrix-ii


提示：
- m == matrix.length
- n == matrix[i].length
-  1 <= n, m <= 300
- -10<sup>9</sup> <= matrix[i][j] <= 10<sup>9</sup>
- 每行的所有元素从左到右升序排列
- 每列的所有元素从上到下升序排列
- -10<sup>9</sup> <= target <= 10<sup>9</sup>


# 示例
```
输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出：true
```
```
输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出：false
```


# 解析

##### Z字形查找

&emsp;&emsp;可以从矩阵 matrix 的右上角 (0, n-1) 进行搜索。在每一步的搜索过程中，如果位于位置 (x, y)，
那么希望在以 matrix 的左下角为左下角、以 (x, y) 为右上角的矩阵中进行搜索，即行的范围为 [x, m−1]，列的范围为 [0, y]：
- 如果 matrix[x,y]=target，说明搜索完成；
- 如果 matrix[x,y]>target，由于每一列的元素都是升序排列的，那么在当前的搜索矩阵中，所有位于第 y 列的元素都是严格大于 target 的，
  因此可以将它们全部忽略，即将 y 减少 1；
- 如果 matrix[x,y]<target，由于每一行的元素都是升序排列的，那么在当前的搜索矩阵中，所有位于第 x 行的元素都是严格小于 target 的，
  因此可以将它们全部忽略，即将 x 增加 1。

&emsp;&emsp;在搜索的过程中，如果超出了矩阵的边界，那么说明矩阵中不存在 target。


# 代码
```php
```